The present disclosure relates to the automated instrumentation of application classes and methods.
Application performance management tools may be used to monitor and manage the performance and availability of software applications. For example, an application performance management tool may monitor the volume of transactions processed by a particular application over time (e.g., the number of transactions per second), the response times of the particular application over various load conditions (e.g., average response times under a peak load), and the computing and storage resources consumed by the particular application over time (e.g., the memory footprint). An application performance management tool may be used to identify objects (or instantiations of classes) and methods within a particular application responsible for run-time issues and/or performance issues by instrumenting application code (e.g., bytecode or source code) associated with the particular application. The application code may be instrumented by inserting probes into particular classes or methods within the application code prior to the application code being compiled into executable machine code. The probes may then be invoked during execution of the particular application in order to collect profiling information. In some cases, the instrumented code may be used to collect profiling information, such as method or function call counts, caller information (e.g., an identification of the calling function), callee information (e.g., an identification of the function called), time stamps associated with the entering and exiting of a particular method or function, and the time duration for each function call.